package com.zeng.sim.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zeng.sim.controller.domain.SysConfig;
import com.zeng.sim.controller.domain.request.PageDomain;
import com.zeng.sim.mapper.SysConfigMapper;
import com.zeng.sim.mapper.model.SysConfigEntity;
import com.zeng.sim.service.SysConfigService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author zengwanlin
 * @since 2023-12-20
 */
@Service
public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfigEntity> implements SysConfigService {

    @Override
    public Page<SysConfig> pageQuery(SysConfig sysConfig, PageDomain pageDomain) {
        Page page = Page.of(pageDomain.getPage(), pageDomain.getLimit());
        LambdaQueryWrapper<SysConfigEntity> wrapper = new LambdaQueryWrapper<>();
        if (StringUtils.hasLength(sysConfig.getConfigCode())) {
            wrapper.eq(SysConfigEntity::getConfigCode, sysConfig.getConfigCode());
        }
        if (StringUtils.hasLength(sysConfig.getConfigName())) {
            wrapper.like(SysConfigEntity::getConfigName, sysConfig.getConfigName());
        }
        page(page, wrapper);

        List<SysConfigEntity> recordList = page.getRecords();
        List<SysConfig> list = new ArrayList<>(recordList.size());
        for (SysConfigEntity entity : recordList) {
            SysConfig config = new SysConfig();
            BeanUtils.copyProperties(entity, config);
            list.add(config);
        }
        page.setRecords(list);
        return page;
    }

    @Override
    public boolean saveSysConfig(SysConfig sysConfig) {
        SysConfigEntity sysConfigEntity = new SysConfigEntity();
        sysConfigEntity.setConfigType(sysConfig.getConfigType());
        sysConfigEntity.setConfigCode(sysConfig.getConfigCode());
        sysConfigEntity.setConfigName(sysConfig.getConfigName());
        sysConfigEntity.setConfigValue(sysConfig.getConfigValue());
        sysConfigEntity.setRemark(sysConfig.getRemark());
        return save(sysConfigEntity);
    }

    @Override
    public boolean updateSysConfig(SysConfig sysConfig) {
        SysConfigEntity sysConfigEntity = new SysConfigEntity();
        sysConfigEntity.setConfigId(sysConfig.getConfigId());
        sysConfigEntity.setConfigType(sysConfig.getConfigType());
        sysConfigEntity.setConfigName(sysConfig.getConfigName());
        sysConfigEntity.setConfigValue(sysConfig.getConfigValue());
        sysConfigEntity.setRemark(sysConfig.getRemark());
        return updateById(sysConfigEntity);
    }

}
